//
// Created by wyh on 2025-07-22 21:26.
//

#ifndef FRAMEWORK_CPP_PARSER_H
#define FRAMEWORK_CPP_PARSER_H

#include <string>
#include "json/json.h"

namespace wyh {
    namespace json {
        class Parser
        {
        public:
            Parser()=default;
            ~Parser()=default;

            void load(const std::string &filename);

            void load(const char *buf, int len);

            Json parse();

        private:
            void skip_white_space();
            char get_next_token();
            bool in_range(int x,int lower,int upper) const;

            Json parse_null();
            Json parse_bool();
            Json parse_number();
            std::string parse_string();
            Json parse_array();
            Json parse_object();

        private:
            std::string m_str;
            size_t m_idx;
        };
    } // namespace json
} // namespace wyh

#endif //FRAMEWORK_CPP_PARSER_H
